An interrupt is the automatic transfer of software execution in response to a hardware event that is asynchronous with the current software execution. Hardware devices can use interrupts to signal to a processor that the hardware device requires service. Although hardware components may rely on interrupts to communicate with a processor, the processor experiences regular periods of time in which external interrupts are disabled.
For example, when the processor enters an interrupt service routine (ISR) to handle an interrupt, the processor may automatically disable the servicing of other interrupts. The processor may also disable the servicing of interrupts while performing atomic operations that cannot be interrupted. Additionally, software executing on the processor can disable interrupts by writing to a software register.
It is difficult to place a check on the duration in which interrupts are disabled, particularly on an embedded system. If interrupts are disabled for an extended period the processor may miss time critical interrupts that occur during this period. Missing time critical interrupts may lead to system instability, or other undesired effects.